{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy import ndimage\n",
    "import os\n",
    "import argparse\n",
    "import cv2\n",
    "import torch\n",
    "from collections import OrderedDict\n",
    "from utils import ACTION_TO_ID, compute_demo_dist, get_prediction_vis, compute_cc_dist\n",
    "from trainer import Trainer\n",
    "from demo import Demonstration, load_all_demos\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import umap\n",
    "import umap.plot\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# helper function to mix colors\n",
    "def mix_colors_rgba(color_a, color_b, mode=\"mix\", t=None, gamma=2.2):\n",
    "    \"\"\"\n",
    "    Mix two colors color_a and color_b.\n",
    "\n",
    "    Arguments:\n",
    "        color_a:    Real-valued 4-tuple. Foreground color in \"blend\" mode.\n",
    "        color_b:    Real-valued 4-tuple. Background color in \"blend\" mode.\n",
    "        mode:       \"mix\":   Interpolate between two colors.\n",
    "                    \"blend\": Blend two translucent colors.\n",
    "        t:          Mixing threshold.\n",
    "        gamma:      Parameter to control the gamma correction.\n",
    "\n",
    "    Returns: \n",
    "        rgba:       A 4-tuple with the result color.\n",
    "\n",
    "    To reproduce Markus Jarderot's solution:\n",
    "            mix_colors_rgba(a, b, mode=\"blend\", t=0, gamma=1.)\n",
    "    To reproduce Fordi's solution:\n",
    "            mix_colors_rgba(a, b, mode=\"mix\", t=t, gamma=2.)\n",
    "    To compute the RGB color of a translucent color on white background:\n",
    "            mix_colors_rgba(a, [1,1,1,1], mode=\"blend\", t=0, gamma=None)\n",
    "    \"\"\"\n",
    "    assert(mode in (\"mix\", \"blend\"))\n",
    "    assert(gamma is None or gamma>0)\n",
    "    t = t if t is not None else (0.5 if mode==\"mix\" else 0.)\n",
    "    t = max(0,min(t,1))\n",
    "    color_a = np.asarray(color_a)\n",
    "    color_b = np.asarray(color_b)\n",
    "    if mode==\"mix\" and gamma in (1., None):\n",
    "        r, g, b, a = (1-t)*color_a + t*color_b\n",
    "    elif mode==\"mix\" and gamma > 0:\n",
    "        r,g,b,_ = np.power((1-t)*color_a**gamma + t*color_b**gamma, 1/gamma)\n",
    "        a = (1-t)*color_a[-1] + t*color_b[-1]\n",
    "    elif mode==\"blend\":\n",
    "        alpha_a = color_a[-1]*(1-t)\n",
    "        a = 1 - (1-alpha_a) * (1-color_b[-1])\n",
    "        s = color_b[-1]*(1-alpha_a)/a\n",
    "        if gamma in (1., None):\n",
    "            r, g, b, _ = (1-s)*color_a + s*color_b\n",
    "        elif gamma > 0:\n",
    "            r, g, b, _ = np.power((1-s)*color_a**gamma + s*color_b**gamma,\n",
    "                                  1/gamma)\n",
    "\n",
    "    return tuple(np.clip([r,g,b,a], 0, 1))\n",
    "\n",
    "# helper function to blend images\n",
    "def blend(img1, img2, mask_weight=0.7):\n",
    "    blended = np.zeros_like(img1)\n",
    "    img1 = np.concatenate([img1, np.ones([img1.shape[0], img1.shape[1], 1]) * mask_weight], axis=-1)\n",
    "    img2 = np.concatenate([img2, np.ones([img1.shape[0], img1.shape[1], 1]) * (1-mask_weight)], axis=-1)\n",
    "    for i in range(img1.shape[0]):\n",
    "        for j in range(img1.shape[1]):\n",
    "            blended[i, j] = mix_colors_rgba(img1[i, j], img2[i, j], mode='blend')[:-1]\n",
    "    \n",
    "    return blended"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CUDA detected. Running with GPU acceleration.\n",
      "Pre-trained model snapshot loaded from: logs/base_models/best_stack/snapshot.reinforcement_trial_success_rate_best_value.pth\n",
      "CUDA detected. Running with GPU acceleration.\n",
      "Pre-trained model snapshot loaded from: logs/base_models/best_rows/snapshot.reinforcement_trial_success_rate_best_value.pth\n",
      "CUDA detected. Running with GPU acceleration.\n",
      "Pre-trained model snapshot loaded from: logs/base_models/best_unstacking/snapshot.reinforcement_trial_success_rate_best_value.pth\n",
      "CUDA detected. Running with GPU acceleration.\n",
      "Pre-trained model snapshot loaded from: logs/base_models/vertical_square_hist_densenet/snapshot.reinforcement_trial_success_rate_best_value.pth\n"
     ]
    }
   ],
   "source": [
    "sim_workspace_limits = np.asarray([[-0.724, -0.276], [-0.224, 0.224], [-0.0001, 0.5]])\n",
    "\n",
    "stack_snapshot_file = 'logs/base_models/best_stack/snapshot.reinforcement_trial_success_rate_best_value.pth'\n",
    "row_snapshot_file = 'logs/base_models/best_rows/snapshot.reinforcement_trial_success_rate_best_value.pth'\n",
    "unstack_snapshot_file = 'logs/base_models/best_unstacking/snapshot.reinforcement_trial_success_rate_best_value.pth'\n",
    "vertical_square_snapshot_file = 'logs/base_models/vertical_square_hist_densenet/snapshot.reinforcement_trial_success_rate_best_value.pth'\n",
    "\n",
    "# define trainers\n",
    "stack_trainer = Trainer(method='reinforcement', push_rewards=True, future_reward_discount=0.5,\n",
    "                          is_testing=True, snapshot_file=stack_snapshot_file,\n",
    "                          force_cpu=False, goal_condition_len=0, place=True,\n",
    "                          pretrained=True, flops=False, network='densenet',\n",
    "                          common_sense=True, place_common_sense=True,\n",
    "                          show_heightmap=False, place_dilation=0.05,\n",
    "                          common_sense_backprop=True, trial_reward='spot',\n",
    "                          num_dilation=0)\n",
    "\n",
    "row_trainer = Trainer(method='reinforcement', push_rewards=True, future_reward_discount=0.5,\n",
    "                          is_testing=True, snapshot_file=row_snapshot_file,\n",
    "                          force_cpu=False, goal_condition_len=0, place=True,\n",
    "                          pretrained=True, flops=False, network='densenet',\n",
    "                          common_sense=True, place_common_sense=True,\n",
    "                          show_heightmap=False, place_dilation=0.05,\n",
    "                          common_sense_backprop=True, trial_reward='spot',\n",
    "                          num_dilation=0)\n",
    "\n",
    "unstack_trainer = Trainer(method='reinforcement', push_rewards=True, future_reward_discount=0.5,\n",
    "                          is_testing=True, snapshot_file=unstack_snapshot_file,\n",
    "                          force_cpu=False, goal_condition_len=0, place=True,\n",
    "                          pretrained=True, flops=False, network='densenet',\n",
    "                          common_sense=True, place_common_sense=True,\n",
    "                          show_heightmap=False, place_dilation=0.05,\n",
    "                          common_sense_backprop=True, trial_reward='spot',\n",
    "                          num_dilation=0)\n",
    "\n",
    "vertical_square_trainer = Trainer(method='reinforcement', push_rewards=True, future_reward_discount=0.5,\n",
    "                          is_testing=True, snapshot_file=vertical_square_snapshot_file,\n",
    "                          force_cpu=False, goal_condition_len=0, place=True,\n",
    "                          pretrained=True, flops=False, network='densenet',\n",
    "                          common_sense=True, place_common_sense=True,\n",
    "                          show_heightmap=False, place_dilation=0.05,\n",
    "                          common_sense_backprop=True, trial_reward='spot',\n",
    "                          num_dilation=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "img_name = 'stack_place'\n",
    "\n",
    "demo_color = 'figures/imgs/demo/color/'+ img_name + '.png'\n",
    "real_color = 'figures/imgs/real/color/' + img_name + '.png'\n",
    "demo_color = cv2.cvtColor(cv2.imread(demo_color), cv2.COLOR_BGR2RGB)\n",
    "real_color = cv2.cvtColor(cv2.imread(real_color), cv2.COLOR_BGR2RGB)\n",
    "\n",
    "demo_depth = 'figures/imgs/demo/depth/' + img_name + '.png'\n",
    "real_depth = 'figures/imgs/real/depth/' + img_name + '.png'\n",
    "demo_depth = np.stack([cv2.imread(demo_depth, -1)]*3, axis=-1).astype(np.float32)/100000\n",
    "real_depth = np.stack([cv2.imread(real_depth, -1)]*3, axis=-1).astype(np.float32)/100000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "# define trainer\n",
    "trainer = unstack_trainer\n",
    "selected_rot = 1\n",
    "demo_rot = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "# run forward passes\n",
    "demo_push, demo_grasp, demo_place = trainer.forward(demo_color, demo_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "\n",
    "# fill masked array (CHANGE IMAGE HERE)\n",
    "demo_grasp = demo_place.filled(0.0)\n",
    "\n",
    "# ASSUME ANY IMAGE IS NAMED DEMO GRASP\n",
    "demo_grasp = np.swapaxes(demo_grasp, 0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "# run forward passes\n",
    "real_push, real_grasp, real_place = trainer.forward(real_color, real_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "\n",
    "# fill masked array (CHANGE IMAGE HERE)\n",
    "real_grasp = real_place.filled(0.0)\n",
    "\n",
    "# ASSUME ANY IMAGE IS NAMED REAL GRASP\n",
    "real_grasp = np.swapaxes(real_grasp, 0, 1)\n",
    "\n",
    "# get masked inds\n",
    "real_mask = (real_grasp == 0).all(axis=0).astype(int)\n",
    "demo_mask = (demo_grasp == 0).all(axis=0).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(236304, 64) (87552, 64)\n"
     ]
    }
   ],
   "source": [
    "# flatten real_grasp\n",
    "real_grasp_flat = real_grasp.reshape(64, -1).T\n",
    "\n",
    "# apply mask\n",
    "real_grasp_flat_masked = real_grasp_flat[real_mask.flatten() == 0]\n",
    "\n",
    "# flatten demo_grasp\n",
    "demo_grasp_flat = demo_grasp.reshape(64, -1).T\n",
    "\n",
    "# apply mask\n",
    "demo_grasp_flat_masked = demo_grasp_flat[demo_mask.flatten() == 0]\n",
    "\n",
    "print(real_grasp_flat_masked.shape, demo_grasp_flat_masked.shape)\n",
    "\n",
    "fit = umap.UMAP(n_components=3, n_neighbors=5)\n",
    "grasp_colorized = fit.fit_transform(np.concatenate([demo_grasp_flat_masked, real_grasp_flat_masked]))\n",
    "\n",
    "#umap.plot.points(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# to colorize, take 3D value and convert to an rgb color\n",
    "#grasp_colorized_norm = np.linalg.norm(grasp_colorized, axis=1)\n",
    "\n",
    "# split into real and demo\n",
    "demo_colorized = grasp_colorized[:demo_grasp_flat_masked.shape[0]]\n",
    "real_colorized = grasp_colorized[demo_grasp_flat_masked.shape[0]:]\n",
    "\n",
    "# set unmasked values to colors\n",
    "real_flat_colorized = np.stack([real_grasp.copy()[0, ...].flatten()]*3, axis=-1)\n",
    "real_flat_colorized[real_mask.flatten() == 0] = real_colorized\n",
    "real_flat_colorized[real_mask.flatten() != 0] = (0, 0, 0)\n",
    "\n",
    "# reshape to get colorized img (index into rotation 0)\n",
    "real_colorized_img = real_flat_colorized.reshape(16, 224, 224, 3)\n",
    "\n",
    "# add circle around selected action\n",
    "fig, ax = plt.subplots(1)\n",
    "ax.set_aspect('equal')\n",
    "\n",
    "# set table mask depending on which mask we are using\n",
    "table_mask = real_mask\n",
    "\n",
    "# blend orig img and colorized embedding\n",
    "#gray_mask = np.stack([real_colorized_img[2] * 255/np.max(real_colorized_img[2])]*3, axis=-1).astype(np.uint8)\n",
    "#color_mask = cv2.applyColorMap(gray_mask, cv2.COLORMAP_JET)\n",
    "#color_mask[table_mask[0] != 0] = 0\n",
    "color_mask = (real_colorized_img / np.max(real_colorized_img, axis=(0, 1, 2), keepdims=True)) * 255\n",
    "\n",
    "# rotate img\n",
    "rotated_color = ndimage.rotate(real_depth, 22.5 * selected_rot).astype(np.uint8)\n",
    "rotated_mask = ndimage.rotate(color_mask[selected_rot], 22.5 * selected_rot).astype(np.uint8)\n",
    "crop_start_ind = int(np.rint((rotated_color.shape[0] - 224) / 2))\n",
    "#rotated_color = rotated_color[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "#rotated_mask = rotated_mask[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "#final_img = cv2.addWeighted(rotated_color, 0.45, rotated_mask, 0.55, 0)\n",
    "final_img = blend(rotated_mask/255, rotated_color / 255, mask_weight=0.7)\n",
    "\n",
    "ax.imshow(final_img)\n",
    "#circ = Circle((23, 72), 10, linewidth=3, color=(1, 0, 0, 1), fill=False)\n",
    "#ax.add_patch(circ)\n",
    "plt.tick_params(\n",
    "    axis='both',          # changes apply to the x-axis\n",
    "    which='both',      # both major and minor ticks are affected\n",
    "    bottom=False,      # ticks along the bottom edge are off\n",
    "    left=False,\n",
    "    right=False,\n",
    "    top=False,         # ticks along the top edge are off\n",
    "    labelbottom=False,\n",
    "\n",
    "    labelleft=False) # labels along the bottom edge are off"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# viz demo img\n",
    "\n",
    "# set unmasked values to colors\n",
    "demo_flat_colorized = np.stack([demo_grasp.copy()[0, ...].flatten()]*3, axis=-1)\n",
    "demo_flat_colorized[demo_mask.flatten() == 0] = demo_colorized\n",
    "demo_flat_colorized[demo_mask.flatten() != 0] = (0, 0, 0)\n",
    "\n",
    "# reshape to get colorized img\n",
    "demo_colorized_img = demo_flat_colorized.reshape(16, 224, 224, 3)\n",
    "\n",
    "# add circle around selected action\n",
    "fig, ax = plt.subplots(1)\n",
    "ax.set_aspect('equal')\n",
    "\n",
    "# set table mask depending on which mask we are using\n",
    "table_mask = demo_mask\n",
    "\n",
    "# get color mask\n",
    "color_mask = (demo_colorized_img / np.max(demo_colorized_img, axis=(0, 1, 2), keepdims=True)) * 255\n",
    "\n",
    "# rotate img\n",
    "rotated_color = ndimage.rotate(demo_depth, 22.5 * demo_rot).astype(np.uint8)\n",
    "rotated_mask = ndimage.rotate(color_mask[demo_rot], 22.5 * demo_rot).astype(np.uint8)\n",
    "crop_start_ind = int(np.rint((rotated_color.shape[0] - 224) / 2))\n",
    "#rotated_color = rotated_color[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "#rotated_mask = rotated_mask[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "#final_img = cv2.addWeighted(rotated_color, 0.45, rotated_mask, 0.55, 0)\n",
    "final_img = blend(rotated_mask/255, rotated_color / 255, mask_weight=0.6)\n",
    "ax.imshow(final_img)\n",
    "#circ = Circle((23, 72), 10, linewidth=3, color=(1, 0, 0, 1), fill=False)\n",
    "#ax.add_patch(circ)\n",
    "plt.tick_params(\n",
    "    axis='both',          # changes apply to the x-axis\n",
    "    which='both',      # both major and minor ticks are affected\n",
    "    bottom=False,      # ticks along the bottom edge are off\n",
    "    left=False,\n",
    "    right=False,\n",
    "    top=False,         # ticks along the top edge are off\n",
    "    labelbottom=False,\n",
    "\n",
    "    labelleft=False) # labels along the bottom edge are off"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing Q-Values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 402,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(42, 7, 71, 136)\n"
     ]
    },
    {
     "ename": "error",
     "evalue": "OpenCV(4.4.0) /tmp/pip-req-build-6179nsls/opencv/modules/imgproc/src/colormap.cpp:736: error: (-5:Bad argument) cv::ColorMap only supports source images of type CV_8UC1 or CV_8UC3 in function 'operator()'\n",
     "output_type": "error",
     "traceback": [
      "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[0;31merror\u001B[0m                                     Traceback (most recent call last)",
      "\u001B[0;32m<ipython-input-402-a038130a6d9a>\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m     15\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m     16\u001B[0m \u001B[0;31m# generate colormap\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 17\u001B[0;31m \u001B[0mcolor_mask\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcv2\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mapplyColorMap\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mreal_grasp_img_norm\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mbest_pix_ind\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcv2\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mCOLORMAP_JET\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m     18\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m     19\u001B[0m \u001B[0;31m# rotate img and mask\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n",
      "\u001B[0;31merror\u001B[0m: OpenCV(4.4.0) /tmp/pip-req-build-6179nsls/opencv/modules/imgproc/src/colormap.cpp:736: error: (-5:Bad argument) cv::ColorMap only supports source images of type CV_8UC1 or CV_8UC3 in function 'operator()'\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib.patches import Circle\n",
    "#real_grasp_img = np.swapaxes(real_grasp[:, :, :], 1, 2)\n",
    "real_grasp_img = real_grasp\n",
    "best_pix_ind = np.unravel_index(np.argmax(real_grasp_img), real_grasp_img.shape)\n",
    "print(best_pix_ind)\n",
    "\n",
    "real_grasp_img_norm = real_grasp_img - np.min(real_grasp_img)\n",
    "real_grasp_img_norm *= 255 / np.max(real_grasp_img_norm)\n",
    "real_grasp_img_norm = real_grasp_img_norm.astype(np.uint8)\n",
    "\n",
    "fig, ax = plt.subplots(1)\n",
    "ax.set_aspect('equal')\n",
    "\n",
    "circ = Circle((best_pix_ind[2],best_pix_ind[1]), 10, linewidth=3, color=(0, 0, 1, 1), fill=False)\n",
    "\n",
    "# generate colormap\n",
    "color_mask = cv2.applyColorMap(real_grasp_img_norm[best_pix_ind[0]], cv2.COLORMAP_JET)\n",
    "\n",
    "# rotate img and mask\n",
    "rotated_color = ndimage.rotate(real_color, 22.5 * 4).astype(np.uint8)\n",
    "rotated_mask = ndimage.rotate(color_mask, 22.5 * 4).astype(np.uint8)\n",
    "#crop_start_ind = int(np.rint((rotated_color.shape[0] - 224) / 2))\n",
    "#rotated_color = rotated_color[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "#rotated_mask = rotated_mask[crop_start_ind:crop_start_ind+224, crop_start_ind:crop_start_ind+224]\n",
    "\n",
    "print(rotated_color.shape, rotated_mask.shape)\n",
    "\n",
    "#final_img = blend(real_color / 255, color_mask / 255)\n",
    "final_img = cv2.addWeighted(rotated_color, 0.4, rotated_mask, 0.6, 0)\n",
    "\n",
    "ax.imshow(final_img, cmap='jet')\n",
    "\n",
    "ax.add_patch(circ)\n",
    "plt.tick_params(\n",
    "    axis='both',          # changes apply to the x-axis\n",
    "    which='both',      # both major and minor ticks are affected\n",
    "    bottom=False,      # ticks along the bottom edge are off\n",
    "    left=False,\n",
    "    right=False,\n",
    "    top=False,         # ticks along the top edge are off\n",
    "    labelbottom=False,\n",
    "    labelleft=False) # labels along the bottom edge are off"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compute SSR matched action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# get all demo embeddings\n",
    "_, _, demo_row = row_trainer.forward(demo_color, demo_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "_, _, demo_unstack = unstack_trainer.forward(demo_color, demo_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "_, _, demo_vertical_square = vertical_square_trainer.forward(demo_color, demo_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "\n",
    "# get all real embeddings\n",
    "_, _, real_row = row_trainer.forward(real_color, real_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "_, _, real_unstack = unstack_trainer.forward(real_color, real_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]\n",
    "_, _, real_vertical_square = vertical_square_trainer.forward(real_color, real_depth, is_volatile=True, keep_action_feat=True, demo_mask=True)[:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fill masked arrays\n",
    "demo_row = demo_row.filled(0.0)\n",
    "demo_unstack = demo_unstack.filled(0.0)\n",
    "demo_vertical_square = demo_vertical_square.filled(0.0)\n",
    "\n",
    "real_row = real_row.filled(0.0)\n",
    "real_unstack = real_unstack.filled(0.0)\n",
    "real_vertical_square = real_vertical_square.filled(0.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# get masks for demo and real\n",
    "demo_mask = np.all((demo_row == 0), axis=1)\n",
    "real_mask = np.all((real_row == 0), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAD8CAYAAAB3lxGOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAbW0lEQVR4nO3de5ScdZ3n8fe3uqq70p3upNNJmhASSCDcVwNExINXGB1EjwFnRmFHZRyP0T2wK3PcdUB3GUZnjpcZZXS9zMDCIYyKqIiyLl4yLEdXzwRNABPIjQQCJOl0k0vf0t3VdfnuH/WkU93pTld3VfVT1c/ndU7TVb/nqXq+TaU+9Xsu9fuZuyMi0RULuwARCZdCQCTiFAIiEacQEIk4hYBIxCkERCKuYiFgZteY2U4z221mt1VqOyJSGqvEdQJmVgfsAt4O7AN+D9zo7tvKvjERKUmlegKXA7vd/QV3Hwa+B6yt0LZEpATxCj3vUuCVgvv7gNdPWEQ87vX19RUqRUQABgcHD7n7orHtlQqBSZnZOmAdQCKR4JxzzgmrFJFI2Lp160vjtVdqd2A/sKzg/hlB2wh3v9vd17j7mng8tCwSibxKhcDvgVVmtsLM6oEbgEcrtC0RKUFFPoLdPWNmtwC/AOqA+9z9uUpsS0RKU7F+uLs/BjxWqecXkfLQFYMiEacQEIk4hYBIxCkERCJOISAScQoBkYhTCIhEnEJAJOIUAiIRpxAQiTiFgEjEKQREIk4hIBJxCgGRiFMIiETctEPAzJaZ2RNmts3MnjOzTwTtd5rZfjN7Jvi5tnzliki5lTKoSAb4pLs/ZWbNwGYz2xAsu8vd/7H08kSk0qYdAu7eAXQEt/vMbDv5ocZFpIaU5ZiAmZ0FXAI8GTTdYmZbzOw+M2stxzZEpDJKDgEzmws8DNzq7r3At4CzgdXkewpfnuBx68xsk5ltymQypZYhItNUUgiYWYJ8AHzH3X8E4O6d7p519xxwD/kpyU6ieQdEqkMpZwcMuBfY7u5fKWhfUrDa9cCz0y9PRCqtlI/gK4EPAlvN7Jmg7dPAjWa2GnBgL/CxErYhIhVWytmB3wA2ziLNNSBSQ3TFoEjEKQREIk4hIBJxCgGRiFMIiEScQkAk4hQCIhGnEBCJOIWASMQpBEQiTiEgEnEKAZGIUwiIRJxCQCTiFAIiEacQEIm4kgf3M7O9QB+QBTLuvsbMFgAPAWeRH13ofe5+tNRtiUj5lasn8DZ3X+3ua4L7twGPu/sq4PHgvohUoUrtDqwF1ge31wPXVWg7IlKicoSAA780s81mti5oaw9mKAI4CLSPfZDmHRCpDuUY8P+N7r7fzBYDG8xsR+FCd3cz87EPcve7gbsBGhsbT1ouIjOj5BBw9/3B7y4ze4T8ZCOdZrbE3TuCeQi6St2OSDXp7u4ml8uNu6y1tZX8tBy1oaQQMLMmIBZMSNoEvAP4LPAocBPwheD3T0otVGSm9fX1kUqlxl3W1dVFNpsdd1kul6Otra1mgqDUnkA78Ejwx8aB77r7z83s98D3zewjwEvA+0rcjkjFDQwM0N/fP3K/p6eHoaGhKT9PR0cHuVyOxYsXl7O8iikpBNz9BeC147QfBq4u5blFKm1oaIienp6R+8eOHePYsWNlee7Ozk4WLVpUE70BzQQqs1o2m6Wra/xDUqlUir6+vopt++DBgyxZsmTyFUOmEJBZY+7FyfwNd/qfS5HL5Thw4ADd3d2h1HPo0CGFgEiltb2hZWRGzOQZifwNh/q59XT99mhoAVBLFAJSc9re0ILF8+/8xuUN4+53zz27Ln8Kb/tMVzfayy+/DMDy5cvDLeQUFAJSE9quaCGWzF/gOuf0eix26gNuFjPmLGuYidJOqaenp+oPDioEpGrNvTjJnEUNWF2M5KIEVje1N1O8oY7LPvAf2PztrRWqcHZQCEhVaTq/gfoFdSQa60nMj1PXEJv2J2msLsaCs+aXt8BZSCEgVWHexU00Lm8g1hgjFjeszqq+G10sd2fPnj2cffbZYZcyLo0sJKFruaiR5gsbqV+QIJ6sIxaf/qf/WImmeq746KVlea5STOfKw5minoCEqvmCRuZd1ESsvjKfR7GY0dQ2pyLPPVuoJyChqqu3igVANcnlcuzatSvsMsY1+//vS1XLDGfJDI//bbxySc5LcuXNr6voNoqRTqfDLmFcCgEJlRf8t1IsZiTmJCq6jVqmEJBQHdsxxMCLw2GXMSNyuRw7duyYfMUZphCQcDmQq/zock0L5/DG/3x5xbczmYlGIwrTtM8OmNl55OcWOG4lcAcwH/go8GrQ/ml3f2y625HZL53KHxeI19dVbBtmRmyKVxxGxbRDwN13AqsBzKwO2A88AnwYuMvd/7EcBcrs1//sIPVNcZpXNYZdyoxw96q6EKpcuwNXA3vc/aUyPZ9I2TWfNpcrbwn3LEE2m6264wLlCoEbgAcL7t9iZlvM7D4zay3TNmQ28/wnZCWZGdXw+VtNvQAoQwiYWT3wHuAHQdO3gLPJ7yp0AF+e4HGafERGHPldHwN7Z+jS2hDfg3V1dZx//vnhFTCOcvQE3gk85e6dAO7e6e5Zd88B95Cfh+Ak7n63u69x9zXxuK5elpkxf9k83rDustC2H4tV3wm5clR0IwW7AsFkI8ddDzxbhm1IBHgWfAZOF4YhFosRj8errhcA5Zl85O3Axwqav2Rmq8mfAd47ZpnIhA5v7CVWbzQuT4ZdSknGftrHYjEuuOCCkKqZXKnzDhwD2sa0fbCkikQqKJfNkR6szDX8dXX56xwuuOCCqjv4dyraGZeq4l6Z8+i5bI5U/zC9B/rY9MCWsjzn2GNZ5513XlXu809GISBVJdWTomE4Qbyh9KsHPecMHB0EYPDoEBvveark54zH4yNv9JUrV5JI1P4XkxQCUlX6tgyRXNBA3dLpjy7k7vR3HSMzlOG339xUlroSiQSxWIzly5eTTNb2MYuxFAJSddJDGZLZ+pG5BYrh7gwfyTA0NEgukyv5zZ9IJEb28QGWLl1KY+PsvKxZISBVJ9OXJTucO/Vgo+6kDqUpvMjw4C+O8Oyzk5+RjsVik36aL1y4kHnz5k2l7JqlEJCq0//cEBjMP38udcnRxwaGOofzb3x3uv5v90njkTQ1NU36/MlkktNPP718Bdc4hYBUpf5nh0g0xJlzZgMWN9KHM3gWDv2mB8+Mf0GRmbFy5coZrrT2KQSkah3d3E+qP01d0ujflsLTs/NqwrApBKSqDexMhV3CrFd7VzaISFkpBEQiTiEgEnEKAZGIUwiIRJxCQCTiigqBYMDQLjN7tqBtgZltMLPng9+tQbuZ2dfMbHcw2Gj480KLyISK7QncD1wzpu024HF3XwU8HtyH/JiDq4KfdeQHHhWRKlVUCLj7r4EjY5rXAuuD2+uB6wraH/C8jcD8MeMOikgVKeWYQLu7dwS3DwLtwe2lwCsF6+0L2kSkCpXlsmF3dzOb0oXdZraO/O7CrBidRaRWldIT6DzezQ9+dwXt+4FlBeudEbSNonkHRKpDKSHwKHBTcPsm4CcF7R8KzhJcAfQU7DaISJUp6iPYzB4E3gosNLN9wN8AXwC+b2YfAV4C3hes/hhwLbAbGCA/S7GIVKmiQsDdb5xg0dXjrOvAzaUUJSIzR1cMikScQkAk4hQCIhGnEBCJOIWASMQpBEQiTiEgEnEKAZGIUwiIRJxCQCTiFAIiEacQEIk4hYBIxCkERCJOISAScQoBkYibNAQmmHjkH8xsRzC5yCNmNj9oP8vMBs3smeDnnytYu4iUQTE9gfs5eeKRDcDF7v4aYBdwe8GyPe6+Ovj5eHnKFJFKmTQExpt4xN1/6e6Z4O5G8iMKi0gNKscxgb8EflZwf4WZPW1mvzKzN030IDNbZ2abzGxTJpOZaDURqbCSBvw3s88AGeA7QVMHsNzdD5vZZcCPzewid+8d+1h3vxu4G6CxsXFKE5fIxOaacX59nKO5LHvSubDLkRow7RAws78A3g1cHYwwjLungFRwe7OZ7QHOBTaVXqqcSmPSWHNhgoWxGFc1NvByd5pHtg/xfDrH0NAQx44dG1m3qamJZDIZYrVSTaYVAmZ2DfAp4C3uPlDQvgg44u5ZM1tJfmbiF8pSqYyrPgGvvyjBwtY6rr3yxBt75dEEaw0eerqH33R20tt7ojPW0tJCU1PTlLbT1taGmY1qc3cOHz58ysfF43Hmz58/pW3JzJo0BCaYeOR2oAHYEPzD2BicCXgz8FkzSwM54OPuPnY2YymTRBz+6PJ63nllkmRDjFjBm9QWGGdflODCTRke6x29N9bb2zsqFIqRzWZPCgGAzs7OU9eYSDA8PFzUNlpaWtRDCcGkITDBxCP3TrDuw8DDpRYlk6uvr+eWmz/Gmy9JkGyoG7UsdewAh/Y+RrwtRv3KGOwofXtdXV2TrzSOdDo9aVAcNzAwMGkILF68mFhM17iVk2YCrTGxGPzZ25s5Z81/4f3vf/+466QGOpkzbyUD3bt5Tf/DvO3wQp548tAMVzp1fX199PX1nXKdbDbLkiVLFARlpBCoIXfccQcxgzde2sjiFddOuF5DYzunrfozhvoP8La2i3mx9//wxJP/MoOVVs6RI0fI5XIsXbpUQVAmCoEa8fnPf553vetdo9qy6WPsffquk9ad03IWp5//AZJzTyc593Suv+Fctuzs5cEHH5ypciuqu7sbd2fZsmXjHqeQqVEI1IC77rqLq68+MfdrLjvMnic/i+fS9BzceNL68fr54M7pF3wQgPPOO48777yTXC7HQw89NFNlV1RPTw/uzvLlyxUEJVJ/qsrd+h/nctVVV43cz+XSPP/b2+g+8P/GDQCAzHA3nbt/yIHt/zrSdu655/JX697C1VcsrHjNM6W3t5e9e/cSXKYi06SeQJX66HVJWlvivOdD3xhp81yWnb/6K/oPb5308ZlUN53P/wCzGEvO/3MAVr/+ei5e8ySPb1xfsbpnWn9/f9gl1Dz1BKrQp26ay2UXNnDumXGaF70WM8M9x7Yn/lNRAXBcZriHg7seomNn/lhAQ9NpfOC9l8yq3gDAnj171BsogUKgytz+4WZWLY+TiMe46O33Aif2dweO7pzy82WGexgeOHGe/jVXfIC/u2Mdb3ldWznKrQqDg4Ps3r077DJqlkKginz8TxpYcXrdyJV/jS0rg16As/UXH5z28x5+eQMdO78LQP2cNpactojb1q3iyksXlKXuajA0NMSuXbvCLqMmKQSqyKrlDUx06jvVv2/az5tN95NJ9Yxqa5tfT9OcugkeUZtSqRQ7d069txR1CoEqUldnM3q6668/uoorXts6Y9ubCcV+T0FOUAhUkUNHh8nlZu4AV3NTnM9/8gIuvXDejG1zJmzfvj3sEmqKQqCKhHGAu2lOnH/69MVcfG7zzG+8QjKZjIJgChQCVeSL6wfZ15ma8dNdyYY66mKz66o7BUHxFAJVJJOFz907yHA6f3/zI+/APT9E2GXXb5j28y5auZYzLl4HwL6td9O158ellloTdO1AcaY778CdZra/YH6BawuW3W5mu81sp5n9caUKn61yObj5i92kM87xAZ3NDIslphUEbWdew5mX3IrF8mcC8qEy+s3R258mnZl9b5hsNqveQBGmO+8AwF0F8ws8BmBmFwI3ABcFj/mmmc2u81AzwB26juR3CzY9/DbcvSAIfln087Se8VZWrLkNs/zLvH/b/RzcdeKbhO5Ob3+aT/3DNrbtPvX3+GtVJpNhx44d6hWcwrTmHTiFtcD33D3l7i8Cu4HLS6gvsu7450FyYwYLNjNidQ1cet3PJ338vCVv4OzX3zlyyjH/JjjxRnB3+gcy/Pd/2sFT23omeJbZIZ1O60KiUyjlmMAtwTRk95nZ8ZPNS4FXCtbZF7SdRPMOTG7d33eTzTmbHn7ryLEBgLr4HF73p79i9bt/TP6y4tE/LYsv49wrvzAqAA7uepAD2+7H3XF3+o5l+Ntv7GLjH47O/B8WEvUGxmfF/I8xs7OAn7r7xcH9duAQ+Y+WzwFL3P0vzezr5Acd/Xaw3r3Az9z9h6d6/sbGRj/nnHNK+kNms//1P+ZjFuOy9/4bELzVY5N/AdQ9h3uOV/f8mJf/8D+DT/8s3/vFAD/42V66u7srW3iVaWhoYNWqVZEdf2Dr1q2b3X3N2PZpfZXY3Ue+kWJm9wA/De7uB5YVrHpG0CYl2N+VYuniBjb/KD+wSKwuySXv+d/E6urHXd89h+fSHN33a174/d8BkM3lP/2/9eBeHtnQMWO1V5NUKsWePXvQB85o09odMLMlBXevB46fOXgUuMHMGsxsBfl5B35XWonyN/8yyCsHUyP3c9khnvnpdWTTA+P+9BzcyOZH3jESAOlMjp/+eoA//+vdkQ2A49yd3NiDLRE36e5A4bwDQCf5eQfeCqwmvzuwF/iYu3cE63+G/PyEGeBWd//Z2OccS7sDkzPgq/9tHk1zis/tTNYZTOV4ZMMBvv7tFytXXI1pampi5cqVYZcx4ybaHSjqmEClKQSKE4vBPZ9uLar/NpzO8ZunB/nqtw/Q0RHtT/+xWlpaOPPMM8MuY8aV9ZiAhMThyCs5Fpw5cQqkM05Pf5Z/f/oQn/umTouN1dzcHMkAOBVdNlxDcg63f7uHTN/4vbd0xtm8PcW6v31ZATCO5uZmzjrrrLDLqDoKgRrjWdj+oyEy3aMPbqUzzlPbU3zpvgPs2zf9AUhmKwXAxBQCNSYLfP3lIbb8JMVLHRmGUjle3J/h6Z1pvvrdIwqAMebMmaMAmISOCdSgjMM3XhoiuX6I915Vz3d/nh9NJxaLkUwmGRoaCrnC8DU1NRGLxfTmL4JCoIYNDTMSAJC/Im7ZsmV0dHSQyWQiGwb65J8ahcAsk0wmWbFiBQMDA7z66qsj7alUilQqdYpH1r6WlhYAHf2fIoXALNXY2DjqzdDb2zvquwKDg4OzalDOefPmsXz58rDLqEkKgYhoaWkZ+aQEOHr0KMeOHRu1Tm9vL9lsdqZLK1lraytLl477ZVUpgkIgolpbW2ltHT3c+Kuvvko6nZ7wMYcPH650WVPS1pafRWnJkiWR/WZgOSgEZMSiRYtOuTw2ZmYUd+fQoUOVLGlCCxcu5LTTTtObvwwUAlK00047bdR9dx8JBncfdSCykhYtWkR7e7sCoEwUAjJtZkZ7ezsAuVyOuroTw0lmMpmy9xIWL15MLBajra1NAVBGCgEpi1gsNmp3IpvNUl9/YtCToaEhjhwpdqjKk7W3t7Nw4cKTdkmkdAoBqYi6urqRA3eQH+yzsbFx1Dq9vb309vae8nna29tJJBK0tLQoACpk0hAws/uAdwNdBWMMPgScF6wyH+h299XBWITbgeNTw25094+Xu2ipPYlE4qSzEXPmzGHevFPPg9jc3DxqN0PKr5iewP3A14EHjje4+/uP3zazLwOFY1bvcffVZapPZrFkMkkymQy7jMibNATc/dfBJ/xJLH905n3AVWWuS0RmSKk7WW8COt39+YK2FWb2tJn9yszeVOLzi0iFlXpg8EbgwYL7HcBydz9sZpcBPzazi9z9pKM/ZrYOWAf5/UURCce0ewJmFgfeCzx0vC2YfuxwcHszsAc4d7zHu/vd7r7G3dfE4zpJIRKWUnYH/gjY4e4jQ9mY2aLjE5Ca2Ury8w68UFqJIlJJxUxN/iDw78B5ZrbPzD4SLLqB0bsCAG8GtpjZM8APgY+7+/SvEBGRiivm7MCNE7T/xThtDwMPl16WiMwUXYIlEnEKAZGIUwiIRJxCQCTiFAIiEacQEIk4hYBIxCkERCJOISAScQoBkYhTCIhEnEJAJOIUAiIRpxAQiTiFgEjEFTOoyDIze8LMtpnZc2b2iaB9gZltMLPng9+tQbuZ2dfMbLeZbTGzSyv9R4jI9BXTE8gAn3T3C4ErgJvN7ELgNuBxd18FPB7cB3gn+WHFVpEfSPRbZa9aRMpm0hBw9w53fyq43Ud+hqGlwFpgfbDaeuC64PZa4AHP2wjMN7Ml5S5cRMpjSscEgklILgGeBNrdvSNYdBBoD24vBV4peNi+oE1EqlDRIWBmc8mPH3jr2HkE3N0Bn8qGzWydmW0ys02ZTGYqDxWRMioqBMwsQT4AvuPuPwqaO49384PfXUH7fmBZwcPPCNpG0bwDItWhmLMDBtwLbHf3rxQsehS4Kbh9E/CTgvYPBWcJrgB6CnYbRKTKFPMRfCXwQWBrMJ8AwKeBLwDfD+YheIn8xKQAjwHXAruBAeDD5SxYRMqrmHkHfgPYBIuvHmd9B24usS4RmSG6YlAk4hQCIhGnEBCJOIWASMQpBEQiTiEgEnEKAZGIUwiIRJxCQCTiFAIiEacQEIk4hYBIxCkERCJOISAScQoBkYhTCIhEnEJAJOIUAiIRZ/nRwEIuwuxV4BhwKOxaSrCQ2q4fav9vqPX6obJ/w5nuvmhsY1WEAICZbXL3NWHXMV21Xj/U/t9Q6/VDOH+DdgdEIk4hIBJx1RQCd4ddQIlqvX6o/b+h1uuHEP6GqjkmICLhqKaegIiEIPQQMLNrzGynme02s9vCrqdYZrbXzLaa2TNmtiloW2BmG8zs+eB3a9h1FjKz+8ysy8yeLWgbt+ZgLsmvBa/LFjO7NLzKR2odr/47zWx/8Do8Y2bXFiy7Pah/p5n9cThVn2Bmy8zsCTPbZmbPmdkngvZwXwN3D+0HqAP2ACuBeuAPwIVh1jSF2vcCC8e0fQm4Lbh9G/DFsOscU9+bgUuBZyermfx8kj8jPwXdFcCTVVr/ncB/HWfdC4N/Tw3AiuDfWV3I9S8BLg1uNwO7gjpDfQ3C7glcDux29xfcfRj4HrA25JpKsRZYH9xeD1wXXiknc/dfA0fGNE9U81rgAc/bCMw/PhV9WCaofyJrge+5e8rdXyQ/Qe7lFSuuCO7e4e5PBbf7gO3AUkJ+DcIOgaXAKwX39wVttcCBX5rZZjNbF7S1+4lp2A8C7eGUNiUT1VxLr80tQXf5voJdsKqu38zOAi4BniTk1yDsEKhlb3T3S4F3Ajeb2ZsLF3q+P1dTp15qsWbgW8DZwGqgA/hyqNUUwczmAg8Dt7p7b+GyMF6DsENgP7Cs4P4ZQVvVc/f9we8u4BHyXc3O49214HdXeBUWbaKaa+K1cfdOd8+6ew64hxNd/qqs38wS5APgO+7+o6A51Ncg7BD4PbDKzFaYWT1wA/BoyDVNysyazKz5+G3gHcCz5Gu/KVjtJuAn4VQ4JRPV/CjwoeAI9RVAT0GXtWqM2Ue+nvzrAPn6bzCzBjNbAawCfjfT9RUyMwPuBba7+1cKFoX7GoR5tLTgCOgu8kdvPxN2PUXWvJL8kec/AM8drxtoAx4Hngf+DVgQdq1j6n6QfJc5TX7/8iMT1Uz+iPQ3gtdlK7CmSuv/16C+LcGbZknB+p8J6t8JvLMK6n8j+a7+FuCZ4OfasF8DXTEoEnFh7w6ISMgUAiIRpxAQiTiFgEjEKQREIk4hIBJxCgGRiFMIiETc/wdTFc90hnlJnAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# index into demo action\n",
    "demo_action_ind = [10, 142, 83]\n",
    "demo_color_viz = demo_color.copy()\n",
    "cv2.circle(demo_color_viz, (demo_action_ind[2], demo_action_ind[1]), 10, color=(255, 255, 255), thickness=2)\n",
    "plt.imshow(demo_color_viz)\n",
    "\n",
    "# index into demo to get best action\n",
    "demo_row_action = demo_row[demo_action_ind[0], :, demo_action_ind[1], demo_action_ind[2]]\n",
    "demo_unstack_action = demo_unstack[demo_action_ind[0], :, demo_action_ind[1], demo_action_ind[2]]\n",
    "demo_vertical_square_action = demo_vertical_square[demo_action_ind[0], :, demo_action_ind[1], demo_action_ind[2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2\n",
      "row rot 7 unstack rot 1 square rot 8\n"
     ]
    }
   ],
   "source": [
    "# match\n",
    "row_dist = np.sum(np.square(real_row - np.expand_dims(demo_row_action, (0, 2, 3))), axis=1)\n",
    "unstack_dist = np.sum(np.square(real_unstack - np.expand_dims(demo_unstack_action, (0, 2, 3))), axis=1)\n",
    "vertical_square_dist = np.sum(np.square(real_vertical_square - np.expand_dims(demo_vertical_square_action, (0, 2, 3))), axis=1)\n",
    "\n",
    "# make masked spot dists inf\n",
    "row_dist[real_mask] = np.max(row_dist) * 1.1\n",
    "unstack_dist[real_mask] = np.max(unstack_dist) * 1.1\n",
    "vertical_square_dist[real_mask] = np.max(vertical_square_dist) * 1.1\n",
    "\n",
    "row_match = np.unravel_index(np.argmin(row_dist), row_dist.shape)\n",
    "unstack_match = np.unravel_index(np.argmin(unstack_dist), unstack_dist.shape)\n",
    "vertical_square_match = np.unravel_index(np.argmin(vertical_square_dist), vertical_square_dist.shape)\n",
    "\n",
    "print(np.argmin([np.min(row_dist), np.min(unstack_dist), np.min(vertical_square_dist)]))\n",
    "matched_action = np.unravel_index(np.argmin(unstack_dist), unstack_dist.shape)\n",
    "\n",
    "print('row rot', row_match[0], 'unstack rot', unstack_match[0], 'square rot', vertical_square_match[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f4c612c87c0>"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# viz\n",
    "fig, ax = plt.subplots(1)\n",
    "ax.set_aspect('equal')\n",
    "\n",
    "# add circle to img\n",
    "real_color_viz = real_color.copy()\n",
    "cv2.circle(real_color_viz, (matched_action[2], matched_action[1]), 10, color=(255, 255, 255), thickness=2)\n",
    "\n",
    "# rotate img\n",
    "real_color_viz = ndimage.rotate(real_color_viz, 22.5 * matched_action[0])\n",
    "\n",
    "\n",
    "#circ = Circle((matched_action[2], matched_action[1]), 10, linewidth=3, color=(1, 1, 1, 1), fill=False)\n",
    "#ax.add_patch(circ)\n",
    "\n",
    "ax.imshow(real_color_viz)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# index into real embeds to get best action embeds\n",
    "real_row_action = real_row[row_match[0], :, row_match[1], row_match[2]]\n",
    "real_unstack_action = real_unstack[unstack_match[0], :, unstack_match[1], unstack_match[2]]\n",
    "real_vertical_square_action = real_vertical_square[vertical_square_match[0], :, vertical_square_match[1], vertical_square_match[2]]\n",
    "\n",
    "# compute rematch\n",
    "row_dist = np.sum(np.square(demo_row - np.expand_dims(real_row_action, (0, 2, 3))), axis=1)\n",
    "unstack_dist = np.sum(np.square(demo_unstack - np.expand_dims(real_unstack_action, (0, 2, 3))), axis=1)\n",
    "vertical_square_dist = np.sum(np.square(demo_vertical_square - np.expand_dims(real_vertical_square_action, (0, 2, 3))), axis=1)\n",
    "\n",
    "# make masked spot dists inf\n",
    "row_dist[demo_mask] = np.max(row_dist) * 1.1\n",
    "unstack_dist[demo_mask] = np.max(unstack_dist) * 1.1\n",
    "vertical_square_dist[demo_mask] = np.max(vertical_square_dist) * 1.1\n",
    "\n",
    "# rematch inds\n",
    "row_rematch = np.array(np.unravel_index(np.argmin(row_dist), row_dist.shape))\n",
    "unstack_rematch = np.array(np.unravel_index(np.argmin(unstack_dist), unstack_dist.shape))\n",
    "vertical_square_rematch = np.array(np.unravel_index(np.argmin(vertical_square_dist), vertical_square_dist.shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "row dist: 93.50935782048768\n",
      "unstack dist: 80.43009387039157\n",
      "vertical square dist: 101.41498903022176\n"
     ]
    }
   ],
   "source": [
    "print('row dist:', np.linalg.norm(row_rematch[1:] - row_match[1:]))\n",
    "print('unstack dist:', np.linalg.norm(unstack_rematch[1:] - unstack_match[1:]))\n",
    "print('vertical square dist:', np.linalg.norm(vertical_square_rematch[1:] - vertical_square_match[1:]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(12, 71, 138)\n"
     ]
    }
   ],
   "source": [
    "print(unstack_match)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f4c7cbe6850>"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# viz rematches\n",
    "# viz\n",
    "fig, ax = plt.subplots(1)\n",
    "ax.set_aspect('equal')\n",
    "\n",
    "# add circle to img\n",
    "real_color_viz = demo_color.copy()\n",
    "cv2.circle(real_color_viz, (vertical_square_rematch[2], vertical_square_rematch[1]), 10, color=(255, 255, 255), thickness=2)\n",
    "\n",
    "# rotate img\n",
    "real_color_viz = ndimage.rotate(real_color_viz, 22.5 * demo_rot)\n",
    "\n",
    "\n",
    "#circ = Circle((matched_action[2], matched_action[1]), 10, linewidth=3, color=(1, 1, 1, 1), fill=False)\n",
    "#ax.add_patch(circ)\n",
    "\n",
    "ax.imshow(real_color_viz)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}